/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.notaria.guerrasalas.be;

import java.io.Serializable;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;

/**
 *
 * @author Administrador
 */
@Entity
@Table(name = "LIBRO", catalog = "BASE_NOTARIAL", schema = "dbo")
@NamedQueries({@NamedQuery(name = "Libro.findAll", query = "SELECT l FROM Libro l"), @NamedQuery(name = "Libro.findByIdLibro", query = "SELECT l FROM Libro l WHERE l.idLibro = :idLibro"), @NamedQuery(name = "Libro.findByNombre", query = "SELECT l FROM Libro l WHERE l.nombre = :nombre"), @NamedQuery(name = "Libro.findByNumero", query = "SELECT l FROM Libro l WHERE l.numero = :numero"), @NamedQuery(name = "Libro.findByNumeroHojas", query = "SELECT l FROM Libro l WHERE l.numeroHojas = :numeroHojas"), @NamedQuery(name = "Libro.findByTipoHojas", query = "SELECT l FROM Libro l WHERE l.tipoHojas = :tipoHojas")})
public class Libro implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @Column(name = "ID_LIBRO", nullable = false)
    private Long idLibro;
    @Basic(optional = false)
    @Column(name = "NOMBRE", nullable = false, length = 250)
    private String nombre;
    @Basic(optional = false)
    @Column(name = "NUMERO", nullable = false)
    private int numero;
    @Basic(optional = false)
    @Column(name = "NUMERO_HOJAS", nullable = false)
    private int numeroHojas;
    @Basic(optional = false)
    @Column(name = "TIPO_HOJAS", nullable = false, length = 20)
    private String tipoHojas;
    @JoinColumn(name = "DUENIO", referencedColumnName = "ID_PERSONA", nullable = false)
    @ManyToOne(optional = false, fetch = FetchType.LAZY)
    private Cliente duenio;
    @JoinColumn(name = "REPRESENTANTE", referencedColumnName = "ID_PERSONA", nullable = false)
    @ManyToOne(optional = false, fetch = FetchType.LAZY)
    private Cliente representante;
    @OneToMany(mappedBy = "fidLibro", fetch = FetchType.LAZY)
    private List<AperturaLibro> aperturaLibroList;

    public Libro() {
    }

    public Libro(Long idLibro) {
        this.idLibro = idLibro;
    }

    public Libro(Long idLibro, String nombre, int numero, int numeroHojas, String tipoHojas) {
        this.idLibro = idLibro;
        this.nombre = nombre;
        this.numero = numero;
        this.numeroHojas = numeroHojas;
        this.tipoHojas = tipoHojas;
    }

    public Long getIdLibro() {
        return idLibro;
    }

    public void setIdLibro(Long idLibro) {
        this.idLibro = idLibro;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public int getNumero() {
        return numero;
    }

    public void setNumero(int numero) {
        this.numero = numero;
    }

    public int getNumeroHojas() {
        return numeroHojas;
    }

    public void setNumeroHojas(int numeroHojas) {
        this.numeroHojas = numeroHojas;
    }

    public String getTipoHojas() {
        return tipoHojas;
    }

    public void setTipoHojas(String tipoHojas) {
        this.tipoHojas = tipoHojas;
    }

    public Cliente getDuenio() {
        return duenio;
    }

    public void setDuenio(Cliente duenio) {
        this.duenio = duenio;
    }

    public Cliente getRepresentante() {
        return representante;
    }

    public void setRepresentante(Cliente representante) {
        this.representante = representante;
    }

    public List<AperturaLibro> getAperturaLibroList() {
        return aperturaLibroList;
    }

    public void setAperturaLibroList(List<AperturaLibro> aperturaLibroList) {
        this.aperturaLibroList = aperturaLibroList;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idLibro != null ? idLibro.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Libro)) {
            return false;
        }
        Libro other = (Libro) object;
        if ((this.idLibro == null && other.idLibro != null) || (this.idLibro != null && !this.idLibro.equals(other.idLibro))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "com.notaria.guerrasalas.be.Libro[idLibro=" + idLibro + "]";
    }

}
